//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Lampara.h"
#include "Math.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
Lampara::Lampara(){
        alturaCopaLampara=15;
        radioLampara=8;
        
        //la copa que forma la lampara
        copa=new Cilindro(0, radioLampara,alturaCopaLampara,20,5);
        copa->setColor(1.0,1.0,0.0);
        copa->rota(90,1,0,0);
        anadeParte(copa);

        GLfloat posFoco[]={0,0,0,1};
        GLfloat LuzDifusa[]={1.0,1.0,1.0,1.0};
        GLfloat LuzAmbiente[]={0.3,0.3,0.3,1.0};
        GLfloat LuzEspecular[]={0,0,0,1.0};
        GLfloat direccion[]={0,0,1};

        float aux=radioLampara/(2*alturaCopaLampara);
        float anguloFoco=(int)(asin(aux)*180/M_PI);
        
        foco=new Luz(GL_LIGHT2,posFoco,LuzAmbiente, LuzDifusa, LuzEspecular,direccion, anguloFoco, 4);
        foco->rota(90,1,0,0);
        anadeParte(foco);
}

void Lampara::cambiarEstadoEncendida(){
        foco->cambiarEstadoEncendida();
}

void Lampara::cambiarAnguloFoco(float escala){

            alturaCopaLampara=alturaCopaLampara*escala;
            float aux=radioLampara/alturaCopaLampara;
            float anguloFoco=(int)(atan(aux)*180/M_PI);
            foco->cambiaAngulo(anguloFoco);
        
}

